package com.rds.workflow.mapper;


import com.rds.workflow.domain.RdaWfTask;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.Date;
import java.util.List;

@Repository
public interface RdaWfTaskMapper {


    /**
     * 根据id查询任务
     *
     * @param id 任务ID
     * @return 任务对象
     */
    public RdaWfTask selectRdaWfTaskByid(Long id);

    /**
     * 查询流程节点任务
     *
     * @param rdaWfTask 流程节点任务
     * @return 流程节点任务
     */
    public List<RdaWfTask> selectRdaWfTaskList(RdaWfTask rdaWfTask);

    /**流程节点任务**/
    public int insertRdaWfTask(RdaWfTask rdaWfTask);

    /**
     * 修改流程节点任务
     *
     * @param rdaWfTask 流程节点任务
     * @return 结果
     */
    public int updateRdaWfTask(RdaWfTask rdaWfTask);

    /**
     * 修改流程节点任务
     *
     * @param rdaWfTask 流程节点任务
     * @return 结果
     */
    public int updateRdaWfTaskAll(RdaWfTask rdaWfTask);

    /**
     * 批量删流程节点任务
     *
     * @param ids 需要删除的流程节点任务ID
     * @return 结果
     */
    public int deleteRdaWfTask(Long[] ids);

    public List<RdaWfTask> selectRdaWfTaskByNodeid(@Param("nodeid") Long nodeid,@Param("workflowid") Long workflowid);

    /**
     * 查询流程节点任务
     *
     * @param rdaWfTask 流程节点任务
     * @return 流程节点任务
     */
    public List<RdaWfTask> selectRdaWfTaskByStateId(RdaWfTask rdaWfTask);

    /**
     * 根据流程id查询任务
     * @return 任务对象
     */
    public List<RdaWfTask> selectRdaWfTaskByworkflowid(RdaWfTask rdaWfTask);

    /**
     * 查询流程节点任务
     *
     * @param objectId 对象id
     * @param stateid 对象状态
     * @return 流程节点任务
     */
    public List<RdaWfTask> selectRdaWfTaskByObjectId(@Param("objectId") Long objectId,@Param("stateid") Long stateid,@Param("taskStateid") Long taskStateid,@Param("userId") Long userId);


    /**
     * 根据流程id删除任务
     *
     * @param workflowid 流程id
     * @return 结果
     */
    public int deleteRdaWfTaskByWorkflowid(@Param("workflowid") Long workflowid);


    /**
     * 根据流程id，节点id 更新任务状态
     *
     * @param workflowid 流程id
     * @param nodeid 节点id
     * @param approveExplain 描述
     * @param stateid 状态id
     * @param modifyTime 修改时间
     * @return 结果
     */
    public int updateRdaWfTaskByStateId(@Param("workflowid") Long workflowid, @Param("nodeid") Long nodeid, @Param("approveExplain") String approveExplain, @Param("stateid") Long stateid, @Param("modifyTime") Date modifyTime);

    /**
     * 修改流程节点任务
     *
     * @param workflowid 流程id
     * @param stateid 状态id
     * @param stateids 状态id
     * @return 结果
     */
    public int updateRdaWfTaskByStatis(@Param("workflowid") Long workflowid,@Param("stateid") Long stateid,@Param("stateids") String stateids);

    /**
     * 修改流程节点任务人员
     *
     * @param userId 现用户id
     * @param nodeId 节点id
     * @param stateId 状态id
     * @param workflowId 流程id
     * @return 结果
     */
    public int updateRdaWfTaskPersonnel(@Param("userId")Long userId,@Param("nodeId")Long nodeId,@Param("stateId")Long stateId,@Param("workflowId")Long workflowId);

    /**
     * 流程任务删除
     *
     * @param nodeid 流程节点id
     * @param workflowid 流程节点id
     * @return 结果
     */
    public int deleteRdaWfTaskByNodeidWorkflowid(@Param("nodeid") Long nodeid,@Param("workflowid") Long workflowid);
}
